package org.jsola.hr.service;

import org.jsola.hr.query.CalculatePayQuery;
import org.jsola.hr.vo.CalculatePayVO;

import java.math.BigDecimal;

/**
 * @author wu
 */
public interface ICalculatePayService {

    /**
     * 根据规则id及相关数据计算薪资
     * @param calculatePayQuery 薪资计算需要的参数
     * @param siteId 租户id
     * @return 薪资对象
     */
    CalculatePayVO calculatePay(CalculatePayQuery calculatePayQuery, String siteId);

    /**
     * 根据规则id及相关数据计算薪资
     * @param empInfoId 员工id
     * @param manHour 工时
     * @param manDay 出勤天数
     * @param year 本次开始时间：年
     * @param month 本次开始时间：月
     * @param historyManHour 历史工时
     * @param historyDay 历史出勤天数
     * @param isAmountRedPacket 工价规则是否发放过红包
     * @param isServiceFeeRedPacket 劳务费规则是否发放过红包
     * @param workerSalary 工人工资（按照比例计算劳务费抽成时使用）
     * @param siteId 租户id
     * @return 薪资相关费用
     */
    CalculatePayVO calculatePay(String empInfoId, Integer manHour, Integer manDay,
                                Integer year, Integer month,
                                Integer historyManHour, Integer historyDay,
                                String isAmountRedPacket, String isServiceFeeRedPacket,
                                BigDecimal workerSalary, String siteId);

    /**
     * 根据规则id及相关数据计算薪资
     * @param empInfoId 员工id
     * @param manHour 工时
     * @param manDay 出勤天数
     * @param year 本次开始时间：年
     * @param month 本次开始时间：月
     * @param historyManHour 历史工时
     * @param historyDay 历史出勤天数
     * @param isAmountRedPacket 工价规则是否发放过红包
     * @param isServiceFeeRedPacket 劳务费规则是否发放过红包
     * @param workerSalary 工人工资（按照比例计算劳务费抽成时使用）
     * @param siteId 租户id
     * @return 薪资相关费用
     */
    CalculatePayVO calculatePay(String empInfoId, BigDecimal manHour, BigDecimal manDay,
                                Integer year, Integer month,
                                BigDecimal historyManHour, BigDecimal historyDay,
                                String isAmountRedPacket, String isServiceFeeRedPacket,
                                BigDecimal workerSalary, String siteId);


}
